导航:首页 > 图片大全 > opencv如何显示图片

opencv如何显示图片

发布时间:2023-01-25 00:38:35

❶ 关于C语言利用openCV显示图片的问题

这个程序我这运行没问题的,是原始图像尺寸显示(vs2012+opencv2.3.1),不清楚你的具体情况,程序里面第二句pImg我复制出来的时候有错误,是大写的i和小写的L很像造成的;

❷ opencv读取图片显示不出来

都已经提示读图片失败了,src = cvLoadImage("lina.jpg");应该是这句话那个图片的路径有问题,写个绝对路径吧。如x:xxx/xxxx/xxxx/lina.jpg。或者将lina.jpg放在debug或者release的路径下

❸ opencv测试不显示图片

结果可以显示

你尝试把你的opencv里面的opencv_world320.dll文件所在的目录”opencvuildx64vc14in”中的所有文件拷贝到“c:windowssystem32”目录下。看清自己的系统是32还是64。64放在systemWOw中

或者你看看网页链接解决的是无法查找或打开 PDB 文件的问题。 希望对你有帮助。共同学习

❹ opencv安装后想测试显示图片程序,参数设置都没问题,编译也通过,但debug后就显示这个,高手们帮帮忙谢啦

程序没经过测试,不过先发表一下言论。程序在进入主函数以后就进入if语句,这时候argc是否等于1,如果不等于1,那函数就直接返回-1了,你把if条件之前加上argc=1;再编译看看。好像还有C++中 的路径好像用的是双斜杠的吧?

❺ OpenCV测试案例运行时不显示图片,只显示窗口

应该是显示的机制问题。我也遇到过,可以这样,直接把src在写到文件里面cvSaveImage(''')应该是正常的。
直接用ipython,opencv来操作吧,很方便。

❻ visual stdio中配置opencv之后输入程序(读取并显示图片)为什么我读入大尺寸图片的时候只能显示一部分

用opencv显示图片和直接打开查看图片不一样。opencv默认直接用100%显示图片。如果图片过大,屏幕无法完全显示很正常。你可以多加一段修改大图像尺寸的代码

❼ opencv如何读入图片

1、首先新建一个VC++控制台项目如下图所示。本文项目名称helloOpenCV。

4、在主文件中添加如下代码:

#include "stdafx.h"

#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int main(int argc, char* argv[])
{
const char* imagename = "emosue.jpg";

//从文件中读入图像
Mat img = imread(imagename);

//如果读入图像失败
if(img.empty())
{
fprintf(stderr, "Can not load image %s ", imagename);
return -1;
}

//显示图像
imshow("image", img);

//此函数等待按键,按键盘任意键就返回
waitKey();

return 0;

❽ 如何在使用OpenCV warpPerspective时显示整个图像

第一步,这副图片是我们将要用来显示的图片,利用opencv提取该照片的灰度值,然后将该照片的灰度值显示出来

第二步,将相关库文件库加进去,包括利用opencv显示的库,特别是黄色圈中的部分,如下图所示

第三步,先要读入图片文件的地址,我将文件放在工程目录下,所以地址如下所示,然后将读入的地址给MAT类,读两次,一次给灰度图像用,另一次给彩色图像用,下面用一个IF不判断出错的处理情况
步骤阅读
4
第四步,按下图所示创建显示窗口,前面参数是窗口名,后面的1表示图像不可缩放,创建一个灰度窗口和一个彩色窗口

5
第五步,将图像在创建的窗口中显示,第一参数是显示的窗口名,第二个参数是我们先读入的MAT图像,后面是按键返回

6
第六步,按上述代码完成后,成功显示图像如下所

❾ mfc中使用opencv显示图片并释放内存

前一天把系统整个重写了一遍,脉络清晰了很多,也终于解决了以前很多崩溃,异常退出的问题。这里小小总结一下自己遇到的麻烦。

1、内存泄露
内存泄露是说没有释放已经不能使用的内存,这里一般指堆的内存才需要显示的释放。比如用malloc,calloc,realloc,new分配的内存是在堆上的,需要用free,delete显示的回收。内存泄露最明显的一是程序很慢,在运行程序时你可以启动任务管理器,会看到程序占用的内存一直“砰砰砰”的往上涨:

最后直接崩溃,或者你关闭程序的时候也会异常退出,出现

Debug Assertion Failed!
Expression: _BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

之类的问题。

除了new的对象我们知道要delete。OpenCV中使用cvCreateImage()新建一个IplImage*,以及使用cvCreateMat()新建一个CvMat*,都需要cvReleaseImage() cvReleaseMat()显示的释放

[cpp] view plainprint?IplImage* subImg=cvCreateImage( cvSize((img->width)*scale,(img->height)*scale), 8, 3 );
CvMat *tempMat=cvCreateMat((img->width)*scale,(maxFace->height)*scale,CV_MAKETYPE(image->depth,image->nChannels));
cvReleaseImage(&subImg);
cvReleaseMat(&tempMat);

IplImage* subImg=cvCreateImage( cvSize((img->width)*scale,(img->height)*scale), 8, 3 );
CvMat *tempMat=cvCreateMat((img->width)*scale,(maxFace->height)*scale,CV_MAKETYPE(image->depth,image->nChannels));
cvReleaseImage(&subImg);
cvReleaseMat(&tempMat);另外一些函数要用到 CvSeq*来存放结果(通常这些都要用cvCreateMemStorage()事先分配一块内存CvMemStorage*),都要是释放掉相应的内存,这是很难找的。

比如从二值图像中寻找轮廓的函数cvFindContours():

[cpp] view plainprint?CvMemStorage* m_storage=cvCreateMemStorage(0);
CvSeq * m_contour=0;
cvFindContours( img, m_storage, &m_contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//释放内存
cvReleaseMemStorage(&m_storage);

CvMemStorage* m_storage=cvCreateMemStorage(0);
CvSeq * m_contour=0;
cvFindContours( img, m_storage, &m_contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//释放内存
cvReleaseMemStorage(&m_storage);
以及人脸识别中检测人脸的函数:

[cpp] view plainprint?CvMemStorage* m_storage=cvCreateMemStorage(0);
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );
CvSeq* faces = cvHaarDetectObjects( img, cascade, m_storage,1.1, 2, 0,cvSize(30, 30) );
//释放内存
cvReleaseMemStorage( &faces->storage);
( &cascade );

CvMemStorage* m_storage=cvCreateMemStorage(0);
CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );
CvSeq* faces = cvHaarDetectObjects( img, cascade, m_storage,1.1, 2, 0,cvSize(30, 30) );
//释放内存
cvReleaseMemStorage( &faces->storage);
( &cascade );
注意这里我们可以使用
cvReleaseMemStorage( &faces->storage);
来释放m_storate,也可以使用:
cvReleaseMemStorage(&m_storage);
释放内存,这是等效的,但一定不要用两次!!

2、一块内存多次释放
对应没有释放内存,对应就是一个内存释放多次,如同上面的 cvReleaseMemStorage用了两次。可能报错的地方:

[cpp] view plainprint?__declspec(noinline)
void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved)
{
/* assign 0 to _debugger_hook_mmy so that the function is not folded in retail */
(_Reserved);
_debugger_hook_mmy = 0;
}

__declspec(noinline)
void __cdecl _CRT_DEBUGGER_HOOK(int _Reserved)
{
/* assign 0 to _debugger_hook_mmy so that the function is not folded in retail */
(_Reserved);
_debugger_hook_mmy = 0;
}或者: Unhandled exception at XXXXXXXXXX in XXX.exe: XXXXXXXXXXX: 堆已损坏。

除了上述的MemStorge问题,使用cvQueryFrame()取出CvCapture*每帧图像,只需在最后释放CvCapture*,不需要释放IplImage*

[cpp] view plainprint?CvCapture* pCapture = cvCreateCameraCapture(-1);
IplImage* pFrame=cvQueryFrame( pCapture );
cvReleaseCapture(&pCapture);

CvCapture* pCapture = cvCreateCameraCapture(-1);
IplImage* pFrame=cvQueryFrame( pCapture );
cvReleaseCapture(&pCapture);
*这篇是以前写的,其实还是建议大家用C++接口的OpenCV,内存问题很少了~

阅读全文

与opencv如何显示图片相关的资料

热点内容
兰州如意硬盒价格图片 浏览:698
男生红短裤配白色上衣图片 浏览:882
本科毕业论文图片怎么做 浏览:820
好平实的文字图片 浏览:627
民国女生鞋子图片 浏览:400
柜台怎么摆放图片餐饮 浏览:390
淘宝已保护的图片如何解决 浏览:109
动漫撩女生图片 浏览:50
三星怎么把图片弄成小组件 浏览:188
半蘑菇头发型图片男生 浏览:346
美女高清全屏图片大全 浏览:760
中国美女生活图片 浏览:10
动漫男生丸子头图片 浏览:902
图片视频如何发送朋友圈 浏览:776
情侣卡通男生拉女生帽子的图片 浏览:495
生菜怎么画简笔画图片 浏览:847
茶壶盖男生头图片 浏览:368
361衣服店铺图片 浏览:225
如何将1920图片改成750 浏览:110
衣服图案logo卡通图片 浏览:764