如何将IPLImageOpenCV 保存为Flash文件?也许有一个图书馆这样做?
在我的应用程序中,我有一个Mat文件,我想在一个带有cvShowImage的窗口中显示,该文件定义为:
void cvShowImage( const char* name, const CvArr* image )
Run Code Online (Sandbox Code Playgroud)
现在,问题是如果我直接传递Mat图像,它会给我一个错误转换:
cannot convert 'cv::Mat' to 'const CvArr*' for argument '2' to 'void cvShowImage(const char*, const CvArr*)'
Run Code Online (Sandbox Code Playgroud)
我试图在这个论坛中搜索有同样问题的人,我找到了这个opencv文档:http: //opencv.willowgarage.com/documentation/cpp/c++_cheatsheet.html
但我不明白如何使用它.
有人能给我一个如何将Mat图像转换为IplImage的例子吗?
这是我的代码:
Mat file;
Mat hogResultFrame = hogStep(temp2);
file = hogResultFrame;
cvShowImage(window_title, (const CvArr*)(file));
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误的歪曲.
我希望你能帮帮我,
非常感谢!
我想直接将数据写入IplImage的imageData数组,但是我找不到很多关于它如何格式化的信息.令我特别困扰的一件事是,尽管创建了具有三个通道的图像,但每个像素有四个字节.
我用来创建图像的功能是:
IplImage *frame = cvCreateImage(cvSize(1, 1), IPL_DEPTH_8U, 3);
Run Code Online (Sandbox Code Playgroud)
根据所有迹象,这应该创建一个三通道RGB图像,但似乎并非如此.
例如,我如何将单个红色像素写入该图像?
谢谢你的帮助,这让我很难过.
我的目标是将过滤器(灰度,复古,对比度,锐化,模糊,平滑等)应用于JavaCv的iplImage.在这样做时,我遇到了这些函数/类:iplImage,CvMat,cvInRangeS,cvCvtColor,cvSmooth.我想就这些问题寻求澄清.以下是我的具体问题:
我正在使用 PIL 库将 gif 图像转换为 jpg 并将它们上传到 s3。我收到此错误:
ValueError: Fileobj 必须实现读取
这是读取图像并转换为jpg的代码的一部分:
im = Image.open(url)
i = 0
mypalette = im.getpalette()
try:
while 1:
im.putpalette(mypalette)
new_im = Image.new("RGBA", im.size)
new_im.paste(im)
key = 'img'+str(i)+'.jpg'
in_mem_file = io.BytesIO()
new_im.save(in_mem_file, "JPEG")
s3.upload_fileobj(in_mem_file.getvalue(), bucket, key)
i += 1
im.seek(im.tell() + 1)
except EOFError:
pass
Run Code Online (Sandbox Code Playgroud)
我使用 io.BytesIO 来读取字节,但是我仍然遇到相同的错误。如果我从 in_mem_file 中删除 getvalue 空图像保存在存储桶中。
我正在用python中的opencv做一些简单的程序.我想自己编写一些算法,因此需要获取图像中的"原始"图像数据.我不能只做图像[i,j],我怎么能得到数字?
谢谢
当我尝试使用cvCopy时,一个由3个通道组成的IplImage到一个带有4个通道的IplImage(后面我需要额外的通道),我得到的只是一条错误信息.
是否有另一种方法可以增加IplImage的通道数而不会丢失它已经拥有的数据?
谢谢!
我需要一些C++ /指针帮助.当我创建一个RGB IplImage并且我想访问i时,我使用以下C++类:http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv- intro.html
template<class T> class Image
{
private:
IplImage* imgp;
public:
Image(IplImage* img=0) {imgp=img;}
~Image(){imgp=0;}
void operator=(IplImage* img) {imgp=img;}
inline T* operator[](const int rowIndx) {
return ((T *)(imgp->imageData + rowIndx*imgp->widthStep));}
};
typedef struct{
unsigned char b,g,r;
} RgbPixel;
typedef struct{
float b,g,r;
} RgbPixelFloat;
typedef Image<RgbPixel> RgbImage;
typedef Image<RgbPixelFloat> RgbImageFloat;
typedef Image<unsigned char> BwImage;
typedef Image<float> BwImageFloat;
Run Code Online (Sandbox Code Playgroud)
我一直在使用CUDA,所以有时我必须将所有数据放入一个数组中,我喜欢将每个通道保存在自己的数组中,这样看起来更容易处理数据.所以我通常会这样做:
IplImage *image = cvLoadImage("whatever.tif");
RgbImageFloat img(image);
for(int i = 0; i < exrIn->height; i++)
{
for(int j …Run Code Online (Sandbox Code Playgroud) 有没有办法将IplImage指针转换为浮点指针?基本上将imagedata转换为float.感谢任何帮助.
p_img1和p_img2被IplImage*先前cvLoad'ed,我想p_img1成为的副本p_img2.
写入*p_img1 = *p_img2;似乎工作正常(我可以在调试模式下检查它,以及通过显示图像),除了在该行之后,使用cvReleaseImage一个指针显然也会破坏另一个指针.我不明白,因为两个指针(两个地址)不同,只复制结构的字段.
我注意到使用p_img1 = cvCloneImage(p_img2);修复问题.
有人可以解释为什么*p_img1 = *p_img2是错的吗?有什么cvCloneImage()不同?
这是gpu冲浪代码:
#include <iostream>
#include <iomanip>
#include "opencv2/contrib/contrib.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <opencv2/imgproc/imgproc_c.h>
#include "opencv2/gpu/gpu.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/features2d/features2d.hpp"
using namespace std;
using namespace cv;
using namespace cv::gpu;
void help()
{
cout << "\nThis program demonstrates using SURF_GPU features detector, descriptor extractor and BruteForceMatcher_GPU" << endl;
cout << "\nUsage:\n\tmatcher_simple_gpu <image1> <image2>" << endl;
}
int main(int argc, char* argv[])
{
GpuMat img1(imread("C:\\OpenCV2.3\\opencv2.3\\bin\\Debug\\tsucuba_left.png", CV_LOAD_IMAGE_GRAYSCALE));
SURF_GPU surf;
// detecting keypoints & computing descriptors
GpuMat keypoints1GPU, keypoints2GPU;
GpuMat descriptors1GPU, descriptors2GPU;
surf(img1, …Run Code Online (Sandbox Code Playgroud) 在C ++中,如何从对象cv::Mat或对象中获取颜色格式(例如RGB或BGR)cv::IplImage?
我正在使用以下代码从IplImage创建和显示纹理.它工作大约一半的时间,但有时会扭曲图像,我认为它与纹理填充有关,但我需要帮助修复.
int loadTexture_Ipl(IplImage *image, GLuint *text) {
if (image==NULL) return -1;
glGenTextures(1, text);
glBindTexture( GL_TEXTURE_2D, *text );
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, image->width, image->height,0, GL_BGR, GL_UNSIGNED_BYTE, image->imageData);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此链接是输出的屏幕截图,任何人都有类似的问题.
