以下应用程序在执行时会生成分段错误:
.set __NR_reboot, 169
.set LINUX_REBOOT_CMD_POWER_OFF, 0x4321FEDC
.section .text
.globl _start
_start:
movl $LINUX_REBOOT_CMD_POWER_OFF, %ebx
movl $__NR_reboot, %eax
int $0x80
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的应用程序,我必须遗漏一些非常明显的东西.有人能帮我吗?
它编译为:
as shutdown.s -o shutdown.o
ld shutdown.o -o shutdown
Run Code Online (Sandbox Code Playgroud)
编辑:
即使只是调用syscall sync()的简单应用程序也会生成分段错误:
.set __NR_sync, 36
.section .text
.globl _start
_start:
movl $__NR_sync, %eax
int $0x80
movl $1, %eax #syscall exit
movl $0, %eax
int $0x80
Run Code Online (Sandbox Code Playgroud) 我想读取视频文件(.avi或.mov)并使用Opencv检测运动和边缘.可以帮我提供代码吗?我想创建一个GUI,我们可以在其中选择视频文件,然后我们就可以进行图像处理了opencv中的函数?
我试图通过从服务器(网站)下载图像设置旋转背景图片,并试图与这样卷曲然而有0成功做到这一点.我的代码的(缩短版)如下所示.我没有收到错误,但是,如何"临时"保存此图像以将其显示为我的背景?有图像(-type变量)还是什么?
这只是一次学习经历,因此非常感谢任何图书馆或建议.
#include <curl/curl.h>
CURL *curlCtx = curl_easy_init();
curl_easy_setopt(curlCtx, CURLOPT_URL, "http://www.examplesite.com/testimage.jpeg");
curl_easy_setopt(curlCtx, CURLOPT_WRITEDATA, this);
curl_easy_setopt(curlCtx, CURLOPT_WRITEFUNCTION, callbackfunction);
const CURLcode rc = curl_easy_perform(curlCtx);
if(rc == CURLE_OK){
//it worked
}
size_t callbackfunction(char *data, size_t size, size_t nmemb, void *stream){
//do something here with image...?
}
Run Code Online (Sandbox Code Playgroud)
谢谢,詹姆斯
编辑:对不起我错误地添加了()回调函数.
我有一个抓取器可以获取图像并使用以下代码在屏幕上显示它们
while((lastPicNr = Fg_getLastPicNumberBlockingEx(fg,lastPicNr+1,0,10,_memoryAllc))<200) {
iPtr=(unsigned char*)Fg_getImagePtrEx(fg,lastPicNr,0,_memoryAllc);
::DrawBuffer(nId,iPtr,lastPicNr,"testing"); }
Run Code Online (Sandbox Code Playgroud)
但我想使用指向图像数据的指针并用OpenCV显示它们,因为我需要对像素进行处理.我的相机是CCD单声道相机,像素的深度是8位.我是OpenCV的新手,opencv中是否有任何选项可以返回(unsigned char*)Fg_getImagePtrEx(fg,lastPicNr,0,_memoryAllc); 并在屏幕上显示它?或者从iPtr指针获取数据允许我使用图像数据?
我有一个二进制图像.在某个感兴趣的区域内,我需要计算黑色像素的数量.总是存在循环像素并计算它们的方式,但我正在寻找一种更有效的方法,因为我需要实时进行.
我找到了一种计算非零像素数的方法(使用cvCountNonZero()).是否有任何这样的等效函数来计算零像素(似乎没有我见过的那么多)?如果没有,那么计算黑色像素的最有效方法是什么?
我正在使用OpenCV编写一个实时应用程序,在下面的例子中:我正在尝试从插入firewire 800的HDV摄像头捕获图像.我试图循环使用cvCaptureFromCam上使用的索引,但没有摄像头可以'找到(网络摄像头除外).
有我的代码示例,它循环索引(转义0导致它是网络摄像头的索引):
CvCapture* camera;
int index;
for (index = 1; index < 100; ++index) {
camera = cvCaptureFromCAM(index);
if (camera)
break;
}
if (!camera)
abort();
Run Code Online (Sandbox Code Playgroud)
在任何时候它停止在中止.
我正在编译OSX 10.7,我测试过:
我知道问题是已知的,并且有很多关于此的讨论,但我找不到任何解决方案.
有没有人在同一案件中?
问候.
我试图在此图像中找到居中框的边缘:

我尝试使用houghLines使用dRho = img_width/1000,dTheta = pi/180,阈值= 250它在这个图像上效果很好,缩放到大小的1/3,但在全尺寸图像上它只是到处都是线条在各个方向......
我可以做些什么来调整这个更准确?
我有一个简单的程序,它拍摄视频并播放它(虽然它对视频进行了一些图像处理).可以从对话框结果中检索视频,也可以直接通过提供文件的路径来检索视频.当我使用cv :: CvCapture capture1时,我得到了像capture1.isOpen(),capture1.get(CV_CAP_PROP_FRAME_COUNT)等属性,但是当我使用CvCapture*capture2时,我得到了奇怪的错误.
我想使用cv :: CvCapture capture1,因为我的函数与capture1一致.或者是否有任何方法可以使用这两种类型,在它们之间进行某种转换,如类型转换或其他类型.
其实我有两个节目,程序1的功能是为CV :: CvCapture和程序2的功能是为CvCapture*.我的意思是这两个程序以不同的方式读取视频文件.
然后我合并了这两个程序,以使用program1中的一些函数和program2中的一些函数.但我无法将cv :: CvCapture转换为CvCapture*.
我正在使用OpenCv和Qt Creator.
我的代码在这里发布很长,但我简化了我的代码,使其更小,更易理解.我的代码可能无法正确编译,因为我修改它以使其更简单.
任何帮助,将不胜感激.提前致谢 :)
void MainWindow::on_pushButton_clicked()
{
std::string fileName = QFileDialog::getOpenFileName(this,tr("Open Video"), ".",tr("Video Files (*.mp4 *.avi)")).toStdString();
cv::VideoCapture capture1(fileName); // when I use the cv::VideoCapture capture it gives an error
//error: cannot convert 'cv::VideoCapture' to 'CvCapture*' for argument '1' to 'IplImage* cvQueryFrame(CvCapture*)
//CvCapture* capture2 …Run Code Online (Sandbox Code Playgroud) 我用OpenCV库用c ++编写了一个程序.该程序记录来自网络摄像头的视频,然后将其分成帧.我想知道帧是否在RGB中,因为我想访问每个像素的RGB属性.捕获的编解码器是CV_FOURCC('M','J','P','G').如何在RGB色彩空间中获取帧?
int main() {
Mat image;
VideoCapture cap(0);
cap.set(CV_CAP_PROP_FPS, 10);
if ( !cap.isOpened() ) {
cout << "ERROR : Cannot open the video file"<<endl;
return -1;
}
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE);
double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH);
double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT);
cout << "Frame size :" << dWidth << "x" << dHeight << endl;
Size frameSize(static_cast<int>(dWidth), static_cast<int>(dHeight));
VideoWriter oVideoWriter("E:/myVideo.avi", CV_FOURCC('M', 'J', 'P', 'G'), 10, frameSize, true);
if (!oVideoWriter.isOpened()) {
cout << "ERROR : Failed to write the video"<<endl;
return - 1;
}
while …Run Code Online (Sandbox Code Playgroud)